const express = require("express");
const app = express();
const http = require("http");
const server = http.createServer(app);
const { Server } = require("socket.io");
const io = new Server(server);
const db = require("./models");
const userRouter = require("./routers/userRouter");
const dotenv = require("dotenv");
dotenv.config();

io.on("connection", (socket) => {
  console.log(socket.id);
  socket.on("message", ({ msg, username }) => {
    console.log(`message from ${username}: ${msg}`);
    io.send({ msg, username });
  });
});

app.use(express.urlencoded({ extended: true }));
app.use(express.json());

app.use("/api/user", userRouter);

app.get("/", (req, res) => {
  res.sendFile(__dirname + "/public/index.html");
});

(async () => {
  try {
    await db.sequelize.sync({ alter: true });
    console.log("Database has synced.");
  } catch (error) {
    console.error("Unable to sync the database:", error);
  }
})();

const { PORT } = process.env;

server.listen(PORT, () => {
  console.log("Server has started on Port " + PORT);
});
